/*
 * Copyright (c) 2010-2020 DMGIS Ltd. All Rights Reserved.
 *
 * This software is the confidential and proprietary information of
 * DMGIS. You shall not disclose such Confidential Information
 * and shall use it only in accordance with the terms of the agreements
 * you entered into with DMGIS.
 *
 */
package com.dmgis.qxfw.dataservice.businessservice.yysl.service;


import com.dmgis.qxfw.dataservice.businessservice.api.entity.qx.*;
import com.dmgis.qxfw.dataservice.businessservice.api.entity.qx.soil_humidity;
import com.dmgis.qxfw.dataservice.businessservice.api.entity.xt.MsgMediumSmallScale;
import com.dmgis.qxfw.dataservice.businessservice.api.entity.xt.sys_config;
import com.dmgis.qxfw.dataservice.businessservice.api.entity.yj.country_point;
import com.dmgis.qxfw.dataservice.businessservice.api.entity.yj.potential_points;
import com.dmgis.qxfw.dataservice.businessservice.api.entity.yj.warn_moni_info;
import com.dmgis.qxfw.dataservice.businessservice.api.entity.zy.*;
import com.dmgis.qxfw.dataservice.businessservice.common.domain.*;
import com.dmgis.qxfw.dataservice.businessservice.common.entity.*;
import com.dmgis.qxfw.dataservice.businessservice.common.util.DateTime;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;

@Service
public interface IBasicInfoService {

    /***
     * 得到所有的水库
     * @return
     */
    Object GetReservoirWel();

    /****
     * 获得最新的实况信息
     * @return
     */
    Object GetNewestMsgScale(String stationID);

    /***
     * 验证用户  验证登录名和密码
     * @param userName
     * @param passWord
     * @return
     */
    Object CheckLogin(String userName, String passWord);

    /***
     * 查询最新的QPF数据
     * @param ntimes
     * @return
     */
    Object GetNewestQPF(HttpServletRequest request, String ntimes, String longitude, String latitude);

    /****
     * 获取七天城镇预报  两个地方用到
     * @param request
     * @return
     */
    Object GetSevenForecast(HttpServletRequest request);

    /***
     * 获取预警信号  当天
     * @return
     */
    Object GetWarnSignalInfo();

    /***
     * 通知信息查询 当天
     * @return
     */
    Object GetReservoirNotice();

    /****
     * 当天山洪预警查询
     * @return
     */
    Object GetSlWarningToday(HttpServletRequest request);

    /***
     * 最新一条山洪预警查询
     * @return
     */
    Object GetSlWarningNewest(HttpServletRequest request);

    /****
     * 降雨监控查询
     * @return
     */
    Object GetWarnMoniInfo(String stationid);

    /***
     * 超警戒水位查询
     * @param stationname
     * @return
     */
    Object GetWaterWarnMoniInfo(String stationname);

    /***
     * 获取雷达图  最新十张
     * @param request
     * @return
     */
    Object GetTenDoppler(HttpServletRequest request);

    /***
     * 获取云图   最新十张
     * @param request
     * @return
     */
    Object GetTenSatelliteNephoram(HttpServletRequest request);

    /***
     * 实况监测  24小时   过去30天
     * @param Daytype
     * @return
     */
    Object GetMsgSmallScale(String Daytype, String stationId, DateTime strDate1, DateTime strDate2);

    /***
     * 统计信息
     * @param rainType
     * @return
     */
    Object GetMsgSmallScaleTj(String rainType, DateTime time);

    /****
     * 降雨量级
     * @param rainType
     * @param time
     * @return
     */
    List<staResult> GetMsgSmallScaleJyLevel(String rainType, DateTime time);


    /***
     * 站点排序
     * @param rainType
     * @param time
     * @return
     */
    List<MsgMediumSmallScale> GetMsgSmallScaleList(String rainType, DateTime time);

    /****
     * 河道信息（列表+时序图）
     * @param location
     * @return
     */
    Object GetWaterListChart(String location);

    /***
     * 水库信息  实况数据
     * @param county
     * @return
     */
    Object GetReservoirWaterInfo(String county);

    /***
     * 水库信息查询
     * @param reservoirid
     * @return
     */
    Object GetReservoirInfo(HttpServletRequest request, String reservoirid);

    /****
     * 办公文件查询
     * @param request
     * @param reservoirid
     * @return
     */
    Object GetReservoirFiles(HttpServletRequest request, String reservoirid);

    /***
     * 土壤湿度
     * @param startDate
     * @param endDate
     * @param level
     * @return
     */
    List<soil_humidity> soilChart(String stationId, String startDate, String endDate, String level);

    /***
     * 干旱监测
     * @param startDate
     * @param endDate
     * @param stationname
     * @return
     */
    List<drought> droughtChart(String startDate, String endDate, String stationname);

    /****
     * 得到灾点查询
     * @param selectKey
     * @param type
     * @return
     */
    Object getDPoint(potential_points selectKey, String type);

    /***
     * 定位到流域
     * @return
     */
    Object getRiverBasin();

    /***
     * GetDZWarningNewest
    **/
    Object GetDZWarningNewest(HttpServletRequest request);

    /****
     * QPF查询
     * @param ntimes
     * @return
     */
    List<qpe_qpf> getQPFForecast(String ntimes);

    /****
     * 乡镇预报
     * @param selectKey
     * @param county
     * @return
     */
    List<TownshipForecast> getTownshipFcst(TownshipForecastKey selectKey, String county);

    /***
     * 获取雷达图  最新一张
     * @param request
     * @return
     */
    Object GetNewestDoppler(HttpServletRequest request);

    /***
     * 获取云图   最新一张
     * @param request
     * @return
     */
    Object GetNewestSatelliteNephoram(HttpServletRequest request);

    /***
     * 地图  雨量
     * @param elemQuery
     * @return
     */
    List<ActualData> qxElementQuery(ActualElemQuery elemQuery);

    List<ElemContourSet> getElemContourSet(String elemType);

    /****
     * 蒸发量  默认过去24小时
     * @param startDate
     * @param endDate
     * @param stationId
     * @return
     */
    List<msgmediumsmallscale> evaporationQuery(String startDate, String endDate, String stationId);

    /***
     * 面雨量流域
     * @return
     */
    List<rain_water_shed> getRainwater();

    /***
     * 雨量
     * @param selectKey
     * @return
     */
    List<MsgMediumSmallScale> getSumRain(SRainfallSearch selectKey);

    /***
     * QPF  图片展示
     * @param request
     * @return
     */
    Object GetTenQpf(HttpServletRequest request);

    /***
     * 短临降水格点
     * @param request
     * @return
     */
    Object GetGridData(HttpServletRequest request);

    /***
     * 水情
     * @param startDate
     * @param endDate
     * @return
     */
    Object waterQuery(Date startDate, Date endDate);

    /****
     * 人员信息  查询
     * @param request
     * @param staffid
     * @return
     */
    Object GetStaffInfo(HttpServletRequest request, String staffid);

    /***
     * 职能职责  查询
     * @param reservoirid
     * @return
     */
    Object GetResponsibility(String reservoirid);

    /***
     * 一周天气预报
     * @param request
     * @return
     */
    Object GetWenziForecast(HttpServletRequest request);

    /***
     * 重大天气报
     * @param request
     * @return
     */
    Object GetGreatWeather(HttpServletRequest request);

    /***
     * 气象专题报
     * @param request
     * @return
     */
    Object GetWeatherSpecial(HttpServletRequest request);


    /***
     * 飞行路线
     * @param request
     * @return
     */
    Object GetFlypath(HttpServletRequest request);

    /***
     * 水情
     * @param request
     * @return
     */
    Object GetReWaterInfo(HttpServletRequest request);

    /***
     * 得到水库曲线图
     * @param stcd
     * @return
     */
    List<reservoir_water_info> GetReWaterChartsInfo(String stcd, String startDate, String endDate);

    /***
     * 河道水位监控
     * @return
     */
    Object GetRiverWarnMoniInfo();

    /***
     * 雨量站
     * @param elemQuery
     * @return
     */
    List<ActualData> slElementQuery(ActualElemQuery elemQuery);

    /***
     * 气温  默认过去24小时
     * @param startDate
     * @param endDate
     * @param stationname
     * @return
     */
    List<msgmediumsmallscale> tempQuery(String startDate, String endDate, String stationname);

    /***
     * 预报
     * @return
     */
    String GetForecastTimeInfo();

    /***
     * 新闻动态
     * @param request
     * @return
     */
    Object GetSl_Re(HttpServletRequest request);

//    List<Special_srv_station> GetSpecial_SS(String stationid,String type);
/*城镇预报查询*/
    public List<forecastinfotemp> getCityForecast(forecastinfotemp selectKey, String type);
    /***
     * 重要通知查询
     * @param request
     * @return
     */
    Object GetImportant_notify(HttpServletRequest request);
    /***
     * 重点工作 查询
     * @param request
     * @return
     */
    Object GetImportant_work(HttpServletRequest request);

    /***
     * 得到灌溉预报等级信息
     * @param selectKey
     * @return
     */
    List<reservoir_irrigation_index_fcst>  GetIrrigationFcstInfo(reservoir_irrigation_index_fcst selectKey);

    /***
     * 得到水库灌溉等级预报文档
     * @param docpath
     * @return
     */
    public String getProductID(String docpath);

    /***
     *获取水库入库流量预报结果信息
     * @param selectKey
     * @return
     */
    List<reservoir_water_fcst> GetInboundFlowFcstInfo(reservoir_water_fcst selectKey, String reservoirname);

    /***
     *获取水库入库流量预报最新时间
     * @param
     * @return
     */
    List<reservoir_water_fcst> GetInboundFlowFcstMaxTime();
    /***
     * 查询水库信息
     * @return
     */
    List<water_station> InitReservoirInfo(String reservoirname);


    /**
     * 封装一个持久层方法
     * columns List<String> 查询列
     * tableName String 表名
     * sql String 查询语句
     */
    String queryTData(List<String> columns, String tableName, String sqlCondition);

    /***
     *获取精细化预报最新时间*/
    public township_forecasttemp getInitFineMaxTime();

    /***
     * 获取城镇预报站点信息*/
    public List<township_station> getloadCityStation();

    /***
     * 获取精细化预报站点信息*/
    public List<township_station> getloadFineStation();

    /***
     * 获取城镇预报最新时间*/
    public forecastinfotemp getInitCityMaxTime(String name, String city);

    /***
     * 精细化预报查询*/
    public List<township_forecasttemp> getFineForecast(township_forecasttemp selectKey);
    /***
     * 菜单查询
     * @param reservoirid
     * @return
     */
    Object GetMenu(String reservoirid);

    /***
     * 24小时天气
     * @return
     */
    Object getWeather();

    /***
     * 得到水利设施
     * @return
     */
    List<water_facilities>getFacilities();

    public List<torrent_potential_points> getSLPoint(String county);

    /***
     * 添加/更新气象预警图片
     * @param reservoirid
     * @return
     */
    Object updateQxWarn(String reservoirid, String path, String type);

    List<String> getReservoirLonlat(String stationname);

    List<String> getwatereleLonlat(String stationname);

    List<String> getWaterControlBureauLonlat(String staName);
    /***
     * 得到最近站点未来七天天气预报
     * @param selectKey
     * @param lon·
     * @param lat
     * @return
     */
    List<TownshipForecast> getNearStaThreeForecast(TownshipForecastKey selectKey, String lon, String lat);

    /***
     * 获取QPF数据
     * @param request
     * @return
     */
    Object GetTenQPF(HttpServletRequest request);



    /***
     * 获取QPF  最新一张  三维使用
     * @param request
     * @return
     */
    Object GetNewextQpf(HttpServletRequest request);

    /***
     * 获取精细化预报数据 最新三天  24天
     * @param request
     * @return
     */
    Object GetThreeDayJXH(HttpServletRequest request);

    List<area_rain> getSumAreaRain(SRainfallSearch selectKey);

    List<Rainwatershed> getRainWater();

    List<country_point> getCountry();

    //-------------------------农业-----------------------------

    /**
     * 获取系统配置信息
     * @return
     * @author dsq
     * @date 2018年7月6日
     */
    List<sys_config> getSysConfig(String ParamType);

    /**
     * 获取气象预警监控信息
     * @return
     * @author dsq
     * @date 2018年8月20日
     */
    public List<warn_moni_info> getQxElemMoniData(int removeHour);

    /**  乡镇站点信息
     * @return
     * @author dsq
     * @date 2018年6月27日
     */
    public List<SmallScaleStation> getTownStaList();

    /**  乡镇站点信息
     * @return
     * @author lmw
     * @date 2020年8月27日
     */
    public List<station_info> getNqjk();


    /**  农事活动预报
     * @return
     * @author lmw
     * @date 2020年8月27日
     */
    public List<agri_product> getRnshdyb();

    /**  农业气象灾害区划
     * @return
     * @author lmw
     * @date 2020年8月27日
     */
    public List<agri_product> getQxzhqh();

    /**  月农用天气预报
     * @return
     * @author lmw
     * @date 2020年8月27日
     */
    public List<agri_product> getYry();

    /**  产量预报
     * @return
     * @author lmw
     * @date 2020年8月27日
     */
    public List<agri_product> getClyb();

    /**  发育期预报
     * @return
     * @author lmw
     * @date 2020年8月27日
     */
    public List<agri_product> getFyq();

    /**  病虫害
     * @return
     * @author lmw
     * @date 2020年8月27日
     */
    public List<agri_product> getBch();

    /**  农业气象灾害预警
     * @return
     * @author lmw
     * @date 2020年8月27日
     */
    public List<agri_product> getQxzh();

    /*获取火险预警*/
    public List<HXYJ_Warning> getFirewarning(FireSearch selectKey);

    /* 农田小气候站 */
    public List<farmland_station_img> getQhz();

    /**
     * 地质灾害点查询
     * @param disPointSearch
     * @return
     * @author dsq
     * @date 2018年7月27日
     */
    public List<potential_points> selectDisPoint(DisPointSearch disPointSearch);

    /* 农业大户查询 */
    public Object getDhuser();

    /**
     * 获取地灾预警信息
     * @param dzQuery
     * @return
     * @author dsq
     * @date 2018年7月10日
     */
    public List<DZWarning> getDZInfo(DZQuery dzQuery);


    /***
     * 获取JPG数据
     * @param request
     * @return
     */
    Object GetJPG(HttpServletRequest request, String typeTime, String rainType);


    /**
     * 获取降水预报
     * @return
     */
    public List<Rainforecast> getPrecipitationForecast(String station, String timeType);

    /**
     * 获取面雨量图表
     * @param type 统计类型(0实况、1预报）
     * @param areaType 面雨量类型(0流域 1行政)
     * @return
     */
    public List<AreaRain> getAreaRainfallChart(String type, String areaType);

    /**
     * 获取雨情（表）
     * @param drainagearea
     * @param lastday 过去的时间（天）
     * @return
     */
    public List<msgmediumsmallscale> getRainyWeatherTable(String drainagearea, Integer lastday);

}
  